#include "rbtree.h"

/* 
 * 对红黑树的节点(x)进行左旋转
 *
 * 左旋示意图(对节点x进行左旋)：
 *      px                              px
 *     /                               /
 *    x                               y                
 *   /  \      --(左旋)-->           / \                #
 *  lx   y                          x  ry     
 *     /   \                       /  \
 *    ly   ry                     lx  ly  
 *
 *
 */
static void rbtree_left_rotate(rbtree *T, rbtreenode *x)
{
    rbtreenode *y = x->right;
    x->right = y->left;
    if (y->left != NULL) 
    {
        y->left->parent = x;
    }
    y->parent = x->parent;
    if (x->parent == NULL)
    {
        T->root = y;
    }
    else
    {
        // 如果x是x父亲的左孩子，就把y设置为x父亲的左孩子
        if (x->parent->left == x)
        {
            x->parent->left = y;
        }
        else
        {
            // 如果x是x父亲的右孩子，就把y设置为x父亲的右孩子
            x->parent->right = y;
        }
    }
    y->left = x;
    x->parent = y;
}

int main(void)
{
    return 0;
}